;******************************** RANDOM.GEN SOURCE CODE ** BY STEVE MCLENDON ** COPYRIGHT(C) 1990 ** MINDCRAFT PUBL. CORP. ** CONCORD, MA 01742 ** MINDCRAFT ASSEMBLER ******************************** ORG $6000 &MUL1 DFS 1; =RANDOM NUMBER 'N' (0-255)4MUL2 DFS 1; =UPPER LIMIT OF SCALED RANDOM NUMBER (6)PROL DFS 1; =LSB OF PRODUCT N*6PROH DFS 1; =MSB OF PRODUCT N*64QUO DFS 1; =QUOTIENT OBTAINED BY DIVIDING N*6 BY 255DIV DFS 1; =DIVISOR (255)5REM DFS 1; =REMAINDER OBTAINED BY DIVIDING N*6 BY 255
LDA #$06 STA MUL2 LDA #$FF;DIVISOR=255 STA DIV# JSR $EFAE;GET 0-255 RANDOM NUMBER LDA $CC STA MUL1 LDA #$0 STA PROH) LDX #8;START OF ROUTINE TO MULTIPLY N*6 SHIFT ASL ROL PROH ASL MUL2
BCC CHCNT CLC ADC MUL1
BCC CHCNT INC PROH CHCNT DEX
BNE SHIFT STA PROL CLC. LDX #8;START OF ROUTINE TO DIVIDE N*6 BY 255 LDA PROH
LOOP ASL PROL ROL
BCC DIVID JMP SUB
DIVID CMP DIV BCC DIV1SUB SBC DIV INC PROLDIV1 DEX BNE LOOP STA REM LDA PROL STA QUO LDA REM CMP #$01;CHECK IF REMAINDER >1 BCC ZCHK INC QUO